package com.example.design.b.adapter;

import java.util.Calendar;
import java.util.Date;

/**
 * 日期构造器
 * 最终build方法返回的是Date类型
 * 假如有需求需要build方法返回long型的时间戳
 * 这里就需要用到适配器模式
 */
public class DateBuilder {

    private Calendar calendar;

    /**
     * 初始化日期值, 当前日期
     */
    private void init() {
        this.calendar = Calendar.getInstance();
    }

    /**
     * 初始化指定时间
     *
     * @param date
     */
    private void init(Date date) {
        init();
        this.calendar.setTime(date);
    }

    /**
     * 当天日期
     *
     * @return
     */
    public DateBuilder now() {
        init();
        return this;
    }

    /**
     * 明天
     *
     * @return
     */
    public DateBuilder tomorrow() {
        init();
        this.calendar.add(Calendar.DAY_OF_MONTH, 1);
        return this;
    }

    /**
     * 昨天
     *
     * @return
     */
    public DateBuilder yesterday() {
        init();
        this.calendar.add(Calendar.DAY_OF_MONTH, -1);
        return this;
    }

    /**
     * 构建日期
     *
     * @return
     */
    public Date build() {
        return this.calendar.getTime();
    }
}
